home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / applications / wp / fwmacros1.lha / UserMacros / english / HorizontalCenter.fw < prev    next >
Encoding:
Text File  |  1994-10-04  |  2.0 KB  |  80 lines

  1. /*
  2. $AUTHOR:  Manuel Lemos (UpperDesign@zeus.ci.ua.pt)
  3. $VER: HorizontalCenter 1.00 (1.10.94)
  4.       Description:  ARexx macro for FinalWriter to center all selected
  5.                     graphics in the middle of the leftmost and topmost
  6.                     graphics
  7. */
  8.  
  9. options results
  10.  
  11. GraphicTool
  12. SetMeasure
  13. /* obter uma lista dos objectos seleccionados */
  14. selecionados = 0
  15. FirstObject SELECTED
  16. do until result = 0
  17.   selecionados = selecionados + 1
  18.   objectid.selecionados = result
  19.   NextObject objectid.selecionados SELECTED
  20. end
  21.  
  22. if selecionados > 1 then
  23. do
  24.  
  25.   OBJECTO_LINHA = 2
  26.  
  27.   /* determinar a coordenada dos objectos mais à esquerda e mais à direita */
  28.   do objecto = 1 to selecionados
  29.     GetObjectCoords objectid.objecto
  30.     coords = RESULT
  31.     PARSE VAR coords pagina esquerda cima direita baixo
  32.     GetObjectType objectid.objecto
  33.     tipo = result
  34.  
  35.     /* linhas */
  36.     if tipo = OBJECTO_LINHA then
  37.       do
  38.         if esquerda > direita then
  39.           do
  40.             troca = esquerda
  41.             esquerda = direita
  42.             direita = troca
  43.           end
  44.       end
  45.     else
  46.       direita = esquerda + direita
  47.     if objecto = 1 | esquerda < mais_a_esquerda then
  48.       mais_a_esquerda = esquerda
  49.     if objecto = 1 | direita > mais_a_direita then
  50.       mais_a_direita = direita
  51.   end
  52.  
  53.   /* centrar os objectos */
  54.   centro = ( mais_a_direita + mais_a_esquerda ) / 2
  55.   do objecto = 1 to selecionados
  56.     GetObjectCoords objectid.objecto
  57.     coords = RESULT
  58.     PARSE VAR coords pagina esquerda cima direita baixo
  59.     GetObjectType objectid.objecto
  60.     tipo = result
  61.  
  62.     /* linhas */
  63.     if tipo = OBJECTO_LINHA then
  64.       do
  65.         meia_largura = ( direita - esquerda ) / 2
  66.         direita = centro + meia_largura
  67.       end
  68.     else
  69.       meia_largura = direita / 2
  70.     esquerda = centro - meia_largura
  71.     SetObjectCoords objectid.objecto pagina esquerda cima direita baixo
  72.   end
  73.  
  74.   /* voltar a selecionar todos os objectos selecionados antes */
  75.   do objecto = 1 to selecionados
  76.     SelectObject objectid.objecto MULTIPLE
  77.   end
  78.   redraw
  79. end
  80.